/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package elaborate.h2x.transform.position.schema.statematcher;

import elaborate.h2x.transform.position.schema.state.ElementState;
import elaborate.h2x.transform.position.schema.state.PseudoState;
import elaborate.h2x.transform.position.schema.state.State;
import java.util.List;

/**
 *
 * @author lendle
 */
public interface StateMatchingContext {
    public List<PseudoState> getActivePseudoStates();
    /**
     * 
     * @param firstState
     * @return  pseudo states contains the given state in its first state set
     */
    public List<PseudoState> getPseudoStatesByFirstState(State firstState);
    /**
     * 
     * @param lastState
     * @return pseudo states contains the given state in its last state set
     */
    public List<PseudoState> getPseudoStatesByLastState(State lastState);
    public List<ElementState> getElementStatesUnderPseudoState(PseudoState pseudoState);
    public boolean isPseudoStateSatisfied(PseudoState pseudoState);
    public List<PseudoState> getAllPseudoStates();
    public List<ElementState> getAllElementStates();
}
